﻿/*
 * Author:xmfdsh 11届网络部--邓世豪
 * DataTime：2014-6-9
 * Copyright © 2014 大学生勤工助学服务队 Powered by xmfdsh & 四小狼工作室.
 * 版权所有，违者必究
 */
using QGZX.Helper;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web;

namespace QGZX.Login.OA.Filters
{
    public class OALoginValidateAttribute : System.Web.Mvc.AuthorizeAttribute
    {
        public override void OnAuthorization(System.Web.Mvc.AuthorizationContext filterContext)
        {
            //1.如果请求的 OA 区域里的 控制器类和方法，那么就要验证权限
            if (filterContext.RouteData.DataTokens.Keys.Contains("area")//当前请求匹配的 路由对象中 是否 有 area区域
                && filterContext.RouteData.DataTokens["area"].ToString().ToLower() == "oa")//监测区域名 是否为 OA
            {
                //2.检查 被请求的 方法 和 控制器是否有 Skip 标签，如果有，则不验证；如果没有，则验证
                if (!filterContext.ActionDescriptor.IsDefined(typeof(Common.Attributes.SkipAttribute), false) &&
                    !filterContext.ActionDescriptor.ControllerDescriptor.IsDefined(typeof(Common.Attributes.SkipAttribute), false))
                {
                    //验证用户是否登陆(Session)
                    if (HttpContext.Current.Session["admin"]==null)
                    {
                        filterContext.Result = OperateContext.Current.Redirect("/OA/admin/login", filterContext.ActionDescriptor);
                    }
                    else
                    {
                        
                    }
                }
            }
        }
    }
}
